package com.xuanwei.core.entity.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xuanwei.core.entity.CourierInfo;
import com.xuanwei.core.enums.OrderStatus;
import com.xuanwei.core.enums.RefundStatus;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Author jiangyong
 * @Description TODO
 * @Date 2019/7/16 17:23
 **/
@Data
public class OrderDetailVo {

    /**
     * 主键ID
     */
    private Integer id;

    /**
     * 订单编号
     */
    private String orderNo;


    /**
     * 收货人
     */
    private String receiveName;

    /**
     * 收货人电话
     */
    private String receivePhone;

    /**
     * 省
     */
    private String province;

    private String city;

    /**
     * 县/区
     */
    private String area;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 最新的快递信息
     */
    private CourierInfo.Info courierInfo;

    /**
     * 购物车总金额
     */
    private BigDecimal totalAmount;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 优惠价格
     */
    private BigDecimal preferentialAmount;

    /**
     * 实际支付金额
     */
    private BigDecimal actualAmount;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 状态0未支付1已支付2已发货3已收货4已评价5售后6已关闭7
     */
    private Integer status;

    private Integer refundStatus;
    /**
     * 自动关闭订单的时间 s
     */
    private Long second;

    /**
     * 退款按钮0显示1不显示(有过退款的)
     */
    private Integer refundButton;

    private String statusMsg;

    public String getStatusMsg() {
        if (status != 5) {
            return OrderStatus.getMessage(status);
        } else {
            return RefundStatus.getMessage(refundStatus);
        }
    }

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime payTime;

    /**
     * 发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendTime;

    /**
     * 收货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiveTime;

    /**
     * 评价时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime successTime;

    /**
     * 关闭时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime closeTime;

    /**
     * 备注
     */
    private String remark;


    private List<OrderItem> orderItems;

    @Data
    public static class OrderItem {
        /**
         * 主键ID
         */
        private Integer id;

        /**
         * 商品ID
         */
        private Integer productId;

        /**
         * 商品名称
         */
        private String productName;


        private String skuName;

        /**
         * 数量
         */
        private Integer count;

        /**
         * 价格
         */
        private BigDecimal price;

        /**
         * 商品图片
         */
        private String image;


    }

}
